import { ICommandHandler } from 'clever-ts-utilities';
import { Create{{classify modelName}}Command } from '@modules/{{dasherize moduleName}}/dtos/{{dasherize modelName}}/create-{{dasherize modelName}}.command';
import { {{classify modelName}}RepositoryPort } from '@modules/{{dasherize moduleName}}/repositories/{{dasherize modelName}}-repository.port';
import { {{classify modelName}} } from '@modules/{{dasherize moduleName}}/models/{{dasherize modelName}}';

export class Create{{classify modelName}}Usecase
  implements ICommandHandler<Create{{classify modelName}}Command>
{
  constructor(private readonly {{camelize modelName}}Repository: {{classify modelName}}RepositoryPort) {}

  async execute(command: Create{{classify modelName}}Command): Promise<any> {
    const {{camelize modelName}}: {{classify modelName}} = {{classify modelName}}.create(command);
    return this.{{camelize modelName}}Repository.createItem({{camelize modelName}});
  }
}
